package com.neu.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.neu.domain.CheckApp;
import com.neu.domain.CheckProject;
import com.neu.domain.Dept;
import com.neu.domain.Reglevel;
import com.neu.domain.User;
import com.neu.service.DeptService;
import com.neu.service.ReglevelService;
import com.neu.service.UserService;
import com.neu.utils.JsonModel;


@Controller
@RequestMapping("/home")
public class HomeController {
	
	@Resource(name="deptService")
	private DeptService deptService;
	
	@Resource(name="reglevelService")
	private ReglevelService reglevelService;
	
	@Resource(name="userService")
	private UserService userService;
	//去往挂号页面
	@RequestMapping("/toRegistered")
	public String toRegistered() {
		return "patient/registered";	
	}
	//去往门诊管理首页
	@RequestMapping("/toPatient")
	public String toPatient() {
		return "patient/patientindex";
		
	}
	//去往看诊管理首页
	@RequestMapping("/toDoc")
	public String toDoc() {
		return "doc/docindex";
	}
		
	//去往看诊患者页面
	@RequestMapping("/toPerson")
	public String toPerson() {
		return "doc/person";
	}

	//去往病例首页页面
	@RequestMapping("/toCase")
	public String toCase() {
		return "doc/case";
	}
	//去往退号页面
	@RequestMapping("/toBackOn")
	public String toBackOn() {
		return "patient/backon";
	}
	//去往检查申请页面
	@RequestMapping("/toCheckApp")
	public String toCheckApp() {
		return "doc/checkApp";
	}
	//去往门诊收费页面
	@RequestMapping("/toCharge")
	public String toCharge() {
		return "patient/charge";
	}
	
	
	//Registered.jsp页面加载时调用该方法获取结果
	@RequestMapping("/onloadReg")
	@ResponseBody
	public JsonModel onloadRegistered() {
		JsonModel jsonModel=new JsonModel();
		//获取科室信息和挂号等级信息
		List<Dept> depts=deptService.findAllDept();
		List<Reglevel> reglevels=reglevelService.findAllReglevel();
		//将两个信息封装进map集合
		Map<String,List> maps=new HashMap<String,List>();
		maps.put("depts", depts);
		maps.put("reglevels", reglevels);
		jsonModel.setData(maps);
		return jsonModel;		
	}
	//去往登录页面
	@RequestMapping("/toLogin")
	public String toLogin() {
		return "login";
		
	}
	//处理登录请求完成登录
	@RequestMapping("/login")
	public String login(User user,HttpSession session,Model model) {
		/**
		 * 1、user 中的用户名和密码非空校验(略)
		 * 2、调用service方法
		 * 3、判断返回的user是否为空
		 * 4、判断登录的角色
		 */
		//调用service方法，完成登录功能
		User u=userService.login(user);
		System.out.println(u);
		//如果用户名密码正确
		if(u!=null) {
			
			//判断登录角色
			if(u.getUsertype() == 1) {
				//将门诊管理员信息保存到session中
				session.setAttribute("u_patient", u);
				//如果是门诊管理员，去往门诊管理首页
				return "forward:/home/toPatient";
				
			}
			 //否者去往医生管理首页
			else {
				//将登录医生的信息保存到session中
				session.setAttribute("u_doc", u);
				return "forward:/home/toDoc";
			}
		}
		//如果用户名密码错误，就是没有查询到用户 返回的user为null
		else {
			//去往登录页面 ,将错误信息响应给页面
			model.addAttribute("errorMessage", "登录失败-用户名密码错误");
			return "forward:/home/toLogin";
		}
	}
	
}
